home *** CD-ROM | disk | FTP | other *** search
- // GETINFO SCRIPTING
- // OceanDVD (PL) import info & small picture
-
- (***************************************************
- * Movie information & small picture importation *
- * script for OceanDVD http://www.oceandvd.pl *
- * c) 2003 Grzegorz Jankowski (child@wp.pl) *
- * based on script 'Filmweb (PL) small pic.ifs' *
- * by Piotr Kardasz & Adma's *
- * *
- * For use with Ant Movie Catalog 3.4.2 *
- * www.ant.be.tf/moviecatalog ╖╖╖ www.buypin.com *
- ***************************************************)
-
- program FilmWeb;
- var
- MovieName: string;
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
-
- procedure DelSpace(var Value: String);
- var
- FullValue: String;
- Counter: Integer;
- begin
- if Value <> '' then
- begin
- FullValue := FullValue + StrGet(Value, 1);
- for Counter := 2 to Length(Value) do
- begin
- if StrGet(Value, Counter) <> ' ' then
- FullValue := FullValue + StrGet(Value, Counter)
- else
- if StrGet(FullValue, Length(FullValue)) <> ' ' then
- FullValue := FullValue + ' ';
- end;
- Value := FullValue;
- end
- end;
-
- procedure DecodeHTML(var Value: String);
- var
- FullValue, CharCode: String;
- Counter: Integer;
- begin
- if Value <> '' then
- begin
- FullValue := '';
- Counter := 1;
- repeat
- if StrGet(Value, Counter) <> '&' then
- begin
- CharCode := copy(Value, Counter, 1);
- case CharCode of
- '▒': CharCode := '╣';
- '╢': CharCode := '£';
- 'í': CharCode := 'Ñ';
- '╝': CharCode := 'ƒ';
- 'ª': CharCode := 'î';
- '¼': CharCode := 'Å';
- end;
- FullValue := FullValue + CharCode;
- Counter := Counter + 1;
- end
- else
- begin
- CharCode := copy(Value, Counter, 7);
- case CharCode of
- 'ą': FullValue := FullValue + '╣';
- 'ć': FullValue := FullValue + 'µ';
- 'ę': FullValue := FullValue + 'Ω';
- 'ł': FullValue := FullValue + '│';
- 'ń': FullValue := FullValue + '±';
- 'ó': FullValue := FullValue + '≤';
- 'ś': FullValue := FullValue + '£';
- 'ź': FullValue := FullValue + 'ƒ';
- 'ż': FullValue := FullValue + '┐';
- 'Ą': FullValue := FullValue + 'Ñ';
- 'Ć': FullValue := FullValue + '╞';
- 'Ę': FullValue := FullValue + '╩';
- 'Ł': FullValue := FullValue + 'ú';
- 'Ń': FullValue := FullValue + '╤';
- 'Ó': FullValue := FullValue + '╙';
- 'Ś': FullValue := FullValue + 'î';
- 'Ź': FullValue := FullValue + 'Å';
- 'Ż': FullValue := FullValue + '»';
- 'Š': FullValue := FullValue + ' ';
- 'š': FullValue := FullValue + 'í';
- 'Ţ': FullValue := FullValue + 'í';
- 'ţ': FullValue := FullValue + 'ú';
- 'Ť': FullValue := FullValue + 'ñ';
- 'ť': FullValue := FullValue + 'Ñ';
- 'Ŧ': FullValue := FullValue + 'î';
- 'ŧ': FullValue := FullValue + 'º';
- 'Ũ': FullValue := FullValue + '¿';
- 'ũ': FullValue := FullValue + '⌐';
- 'Ű': FullValue := FullValue + '¬';
- 'ű': FullValue := FullValue + '½';
- 'Ų': FullValue := FullValue + '¼';
- 'ų': FullValue := FullValue + '¡';
- 'Ŵ': FullValue := FullValue + '«';
- 'ŵ': FullValue := FullValue + '»';
- 'Ŷ': FullValue := FullValue + '░';
- 'ŷ': FullValue := FullValue + '▒';
- 'Ÿ': FullValue := FullValue + '▓';
- 'ƀ': FullValue := FullValue + '┤';
- 'Ɓ': FullValue := FullValue + '╡';
- 'Ƃ': FullValue := FullValue + '╢';
- 'ƃ': FullValue := FullValue + '╖';
- 'Ƅ': FullValue := FullValue + '╕';
- 'ƅ': FullValue := FullValue + '╣';
- 'Ɔ': FullValue := FullValue + '║';
- 'Ƈ': FullValue := FullValue + '╗';
- 'ƈ': FullValue := FullValue + '╝';
- 'Ɖ': FullValue := FullValue + '╜';
- 'Ɛ': FullValue := FullValue + '╛';
- 'Ƒ': FullValue := FullValue + '┐';
- 'ƒ': FullValue := FullValue + '└';
- 'Ɠ': FullValue := FullValue + '┴';
- 'Ɣ': FullValue := FullValue + '┬';
- 'ƕ': FullValue := FullValue + '├';
- 'Ɩ': FullValue := FullValue + '─';
- 'Ɨ': FullValue := FullValue + '┼';
- 'Ƙ': FullValue := FullValue + '╞';
- 'ƙ': FullValue := FullValue + '╟';
- 'Ȁ': FullValue := FullValue + '╚';
- 'ȁ': FullValue := FullValue + '╔';
- 'Ȃ': FullValue := FullValue + '╩';
- 'ȃ': FullValue := FullValue + '╦';
- 'Ȅ': FullValue := FullValue + '╠';
- 'ȅ': FullValue := FullValue + '═';
- 'Ȇ': FullValue := FullValue + '╬';
- 'ȇ': FullValue := FullValue + '╧';
- 'Ȉ': FullValue := FullValue + '╨';
- 'ȉ': FullValue := FullValue + '╤';
- 'Ȑ': FullValue := FullValue + '╥';
- 'ȑ': FullValue := FullValue + '╙';
- 'Ȓ': FullValue := FullValue + '╘';
- 'ȓ': FullValue := FullValue + '╒';
- 'Ȕ': FullValue := FullValue + '╓';
- 'ȕ': FullValue := FullValue + '╫';
- 'Ȗ': FullValue := FullValue + '╪';
- 'ȗ': FullValue := FullValue + '┘';
- 'Ș': FullValue := FullValue + '┌';
- 'ș': FullValue := FullValue + '█';
- 'Ƞ': FullValue := FullValue + '▄';
- 'ȡ': FullValue := FullValue + '▌';
- 'Ȣ': FullValue := FullValue + '▐';
- 'ȣ': FullValue := FullValue + '▀';
- 'Ȥ': FullValue := FullValue + 'α';
- 'ȥ': FullValue := FullValue + 'ß';
- 'Ȧ': FullValue := FullValue + 'Γ';
- 'ȧ': FullValue := FullValue + 'π';
- 'Ȩ': FullValue := FullValue + 'Σ';
- 'ȩ': FullValue := FullValue + 'σ';
- 'Ȱ': FullValue := FullValue + 'µ';
- 'ȱ': FullValue := FullValue + 'τ';
- 'Ȳ': FullValue := FullValue + 'Φ';
- 'ȳ': FullValue := FullValue + 'Θ';
- 'ȴ': FullValue := FullValue + 'Ω';
- 'ȵ': FullValue := FullValue + 'δ';
- 'ȶ': FullValue := FullValue + '∞';
- 'ȷ': FullValue := FullValue + 'φ';
- 'ȸ': FullValue := FullValue + 'ε';
- 'ȹ': FullValue := FullValue + '∩';
- 'ɀ': FullValue := FullValue + '≡';
- 'Ɂ': FullValue := FullValue + '±';
- 'ɂ': FullValue := FullValue + '≥';
- 'Ƀ': FullValue := FullValue + '≤';
- 'Ʉ': FullValue := FullValue + '⌠';
- 'Ʌ': FullValue := FullValue + '⌡';
- 'Ɇ': FullValue := FullValue + '÷';
- 'ɇ': FullValue := FullValue + '≈';
- 'Ɉ': FullValue := FullValue + '°';
- 'ɉ': FullValue := FullValue + '∙';
- 'ɐ': FullValue := FullValue + '·';
- 'ɑ': FullValue := FullValue + '√';
- 'ɒ': FullValue := FullValue + 'ⁿ';
- 'ɓ': FullValue := FullValue + '²';
- 'ɔ': FullValue := FullValue + '■';
- 'ɕ': FullValue := FullValue + ' ';
- '%DF;': FullValue := FullValue + '▀';
- '4': FullValue := FullValue + '"';
- '”': FullValue := FullValue + '"';
- '„': FullValue := FullValue + '"';
- '–': FullValue := FullValue + '-';
- else
- FullValue := FullValue + CharCode;
- end;
- Counter := Counter + 7;
- end;
- until Counter > Length(Value);
- HTMLDecode(FullValue);
- Value := FullValue;
- end
- end;
-
- procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
- var
- Line: string;
- MovieTitle, MovieAddress: string;
- StartPos, EndPos: Integer;
- begin
- LineNr := FindLine('<li>', Page, LineNr);
- if LineNr > -1 then
- begin
- PickTreeAdd('Znaleziono filmy:', '');
- Line := Page.GetString(LineNr);
- repeat
- repeat
- StartPos := pos('<li>', Line) + 4;
- Line := copy(Line, StartPos, Length(Line) - StartPos + 1);
- StartPos := pos('href="', Line) + 6;
- Line := copy(Line, StartPos, Length(Line) - StartPos + 1);
- MovieAddress := copy(Line, 1, pos('">', Line) - 1);
- MovieAddress := 'http://www.oceandvd.pl/' + MovieAddress;
- //MovieAddress := 'c:/film.htm';
- StartPos := pos('">', Line) + 2;
- Line := copy(Line, StartPos, Length(Line) - StartPos + 1);
- MovieTitle := copy(Line, 1, pos('</a>', Line) - 1);
- DecodeHTML(MovieTitle);
- HTMLRemoveTags(MovieTitle);
- PickTreeAdd(MovieTitle, MovieAddress);
- until pos('<li>', Line) = 0;
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- until pos('<li>', Line) = 0;
- end
- else
- break;
- end;
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: Integer;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
- //Page.LoadFromFile(Address);
- if pos('Wynik wyszukiwania', Page.Text) = 0 then
- AnalyzeMoviePage(Page)
- else
- begin
- PickTreeClear;
- LineNr := 0;
- AddMoviesTitles(Page, LineNr);
- if PickTreeExec(Address) then
- AnalyzePage(Address);
- end;
- Page.Free;
- end;
-
- procedure AnalyzeMoviePage(Page: TStringList);
- var
- Line, Value, FullValue: string;
- LineNr, Counter: Integer;
- StartPos, EndPos: Integer;
- begin
-
- // Tytu│ polski
- LineNr := FindLine('class="tytuly"><b>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('class="tytuly"><b>', Line) + 18;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- EndPos := pos('(', Line);
- if EndPos > 0
- then EndPos := EndPos - 2
- else EndPos := pos('<', Line) - 1;
- Line := copy(Line, 1, EndPos);
- DecodeHTML(Line);
- SetField(fieldTranslatedTitle, Line);
- end
-
- // Tytu│ oryginalny
- LineNr := FindLine('class="tytuly"><b>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('class="tytuly"><b>', Line) + 18;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('(', Line);
- if StartPos > 0 then
- begin
- StartPos := StartPos + 1;
- EndPos := pos(')', Line);
- end
- else
- begin
- StartPos := 1;
- EndPos := pos('<', Line);
- end
- Line := copy(Line, StartPos, EndPos-StartPos);
- DecodeHTML(Line);
- SetField(fieldOriginalTitle, Line);
- end
-
- // îrednia ocena
- LineNr := FindLine('rednia ocena:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('rednia ocena:', Line) + 10;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('">', Line) + 2;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := IntToStr(Round(StrToInt(StrGet(Line, 1), 0) + (StrToInt(StrGet(Line, 3), 0) / 10) + (StrToInt(StrGet(Line, 4), 0) / 100)));
- SetField(fieldRating, Value);
- end
-
- // Kategoria
- LineNr := FindLine('kat_', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('kat_', Line) + 4;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Line := copy(Line, 1, pos('.jpg', Line) - 1);
- case Line of
- '9': Value := 'Animowany';
- '2': Value := 'Dramat';
- '6': Value := 'Erotyczny';
- '10': Value := 'Film Polski';
- '1': Value := 'Horror';
- '3': Value := 'Komedia';
- '11': Value := 'Przygodowy';
- '8': Value := 'Science Fiction';
- '4': Value := 'Sensacyjny';
- '5': Value := 'Thriller';
- else
- Value := '';
- end;
- SetField(fieldCategory, Value);
- end
-
- // Kraj
- LineNr := FindLine('produkcja:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr+1);
- HTMLRemoveTags(Line);
- DecodeHTML(Line);
- DelSpace(Line);
- Line := copy(Line, 2, Length(Line) - 1);
- SetField(fieldCountry, Line);
- end
-
- // Rok produkcji
- LineNr := FindLine('produkcja:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr+2);
- HTMLRemoveTags(Line);
- DecodeHTML(Line);
- SetField(fieldYear, Line);
- end
-
- // Re┐yseria
- LineNr := FindLine('yseria:</b></td>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr+1);
- HTMLRemoveTags(Line);
- DecodeHTML(Line);
- DelSpace(Line);
- Line := copy(Line, 2, Length(Line) - 1);
- SetField(fieldDirector, Line);
- end
-
- // Producent (dystrybutor)
- LineNr := FindLine('Dystrybucja:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('Dystrybucja:', Line) + 13;
- Line := copy(Line, StartPos, Length(Line) - StartPos + 1);
- DecodeHTML(Line);
- SetField(fieldProducer, Line);
- end
-
- // Czas trwania
- LineNr := FindLine('czas trwania:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr+1);
- StartPos := pos('>', Line) + 1;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := copy(Line, 1, pos(' min', Line) - 1);
- SetField(fieldLength, Value);
- end
-
- // Opis filmu
- LineNr := FindLine('<!-- OPIS FILMU -->', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr+1);
- DecodeHTML(Line);
- HTMLRemoveTags(Line);
- DelSpace(Line);
- SetField(fieldDescription, Line);
- end
-
- // Obsada
- LineNr := FindLine('wystΩpuj', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- Value := '';
- repeat
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- HTMLRemoveTags(Line);
- Value := Value + Line;
- until pos('<td>', Line) = 0;
- DelSpace(Value);
- Value := copy(Value, 2, Length(Line) - 1);
- DecodeHTML(Value);
- SetField(fieldActors, Value);
- end
-
- // Komentarz (Dane techniczne)
- Line := '';
- LineNr := FindLine('Dodatki', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- Line := Line+''#13#10'';
- end
- LineNr := FindLine('<!-- OPIS TECHNICZNY FILMU -->', Page, 0);
- if LineNr > -1 then
- begin
- Line := Line + Page.GetString(LineNr+2)+''#13#10''+Page.GetString(LineNr+3);
- end
- DecodeHTML(Line);
- HTMLRemoveTags(Line);
- DelSpace(Line);
- SetField(fieldComments, Line);
-
- //URL
- begin
- setField(fieldURL,'http://www.oceandvd.pl/search.php?searchtype=1&cmd=find&phrase='+UrlEncode(MovieName));
- end
-
- //Foto
- LineNr:= FindLine('alt="ok│adka"', Page, 0);
- if LineNr > -1
- then begin
- Line:= Page.GetString(LineNr);
- StartPos:= Pos('img src=', Line) + 8;
- Line:= Copy(Line, StartPos, Length(Line));
- Value:= Copy(Line, 2, Pos('alt="ok│adka"', Line) - 4);
- Value:= 'http://www.oceandvd.pl/' + Value;
- HTMLRemoveTags(Value);
- DecodeHTML(Value);
- DelSpace(Value);
- GetPicture(Value, False); // False = nie przechowuj zdjΩcia na zewnΩtrz ; przechowuj w pliku katalogu
- end
-
- DisplayResults;
- end;
-
- begin
- if CheckVersion(3,4,2) then
- begin
- MovieName := GetField(fieldOriginalTitle);
- if MovieName = '' then
- MovieName := GetField(fieldTranslatedTitle);
- if Input('OceanDVD Import', 'Podaj tytu│ filmu:', MovieName) then
- begin
- AnalyzePage('http://www.oceandvd.pl/search.php?searchtype=1&cmd=find&phrase='+UrlEncode(MovieName));
- //AnalyzePage('c:/lista.htm');
- end;
- end else
- ShowMessage('Skrypt wymaga programu Ant Movie Catalog w wersji 3.4.2 lub nowszej');
- end.
-
-
-